#pragma once

//class Solution {
//public:
//    int Add(int input)
//    {
//        int sum = 0;
//        while (input)
//        {
//            int tmp = input % 10;
//            input /= 10;
//            sum += (tmp * tmp);
//        }
//        return sum;
//    }
//
//    bool isHappy(int n)
//     {
//        int slow = n;
//        int fast = n;
//       
//        while (fast != 1 && slow != 1)
//        {
//            slow = Add(slow);
//            fast = Add(fast);
//            fast = Add(fast);
//            if (slow == fast && slow != 1)
//                return false;
//        }
//        return true;
//    }
//};


//class Solution {
//public:
//    int maxArea(vector<int>& height)
//    {
//        int left = 0, right = height.size() - 1;
//        int volume = 0;
//        while (left < right)
//        {
//            int tmp = (right - left) * min(height[left], height[right]);
//            if (tmp > volume)
//                volume = tmp;
//            if (height[right] > height[left])
//                left += 1;
//            else
//                right -= 1;
//        }
//        return volume;
//    }
//};


//int maxArea(vector<int>& h) 
//{
//    int i = 0, j = h.size() - 1, m = 0;
//    while (i < j)
//        m = (h[i] < h[j]) ? max(m, (j - i) * h[i++]) : max(m, (j - i) * h[j--]);
//    return m;
//}

//class Solution {
//public:
//    int triangleNumber(vector<int>& nums)
//    {
//        if (nums.size() < 3)
//        {
//            return 0;
//        }
//        //
//        sort(nums.begin(), nums.end());
//        int ret = 0;
//        int left1 = 0, left2 = nums.size() - 2, right = nums.size() - 1;
//        while (left1 < right - 1)
//        {
//            while (left1 < left2)
//            {
//                while (left1 < left2)
//                {
//                    if (nums[left1] + nums[left2] > nums[right])
//                    {
//                        ret += (left2 - left1);
//                        break;
//                    }
//                    else
//                    {
//                        left1 += 1;
//                    }
//                }
//                left2 -= 1;
//                left1 = 0;
//            }
//            right -= 1;
//            left2 = right - 1;
//            left1 = 0;
//        }
//        return ret;
//    }
//};

//class Solution {
//public:
//    vector<int> twoSum(vector<int>& price, int target)
//    {
//        int left = 0, right = price.size() - 1;
//        vector<int> ret;
//        while (left < right)
//        {
//            int sum = price[left] + price[right];
//            if (sum == target)
//            {
//                ret.push_back(price[left]);
//                ret.push_back(price[right]);
//                break;
//            }
//            else if (sum > target)
//            {
//                right -= 1;
//            }
//            else
//            {
//                left += 1;
//            }
//        }
//        return ret;
//    }
//};